package com.baoyouqun.API.wxPay;

import com.wechat.pay.java.service.payments.jsapi.model.PrepayWithRequestPaymentResponse;
import com.wechat.pay.java.service.payments.model.Transaction;

import java.math.BigDecimal;

/**
 * 微信支付服务接口
 */
public interface WechatPayService {

    /**
     * 创建JSAPI预支付订单（返回前端调起支付的参数）
     *
     * @param orderId 商户订单号（唯一）
     * @param payName 商品描述
     * @param price   支付金额（元）
     * @param openid  小程序用户openid
     * @return 调起支付的参数（PrepayWithRequestPaymentResponse）
     */
    PrepayWithRequestPaymentResponse createJsapiPayOrder(String orderId, String payName, BigDecimal price, String openid);

    
    /**
     * 处理微信支付结果通知
     *
     * @param notifyData 通知内容（JSON字符串）
     * @param serial     微信支付证书序列号（请求头Wechatpay-Serial）
     * @param signature  签名（请求头Wechatpay-Signature）
     * @param nonce      随机字符串（请求头Wechatpay-Nonce）
     * @param timestamp  时间戳（请求头Wechatpay-Timestamp）
     * @return 微信要求的响应（XML格式：SUCCESS/FAIL）
     */
    String handlePayNotify(String notifyData, String serial, String signature, String nonce, String timestamp);

    /**
     * 根据商户订单号查询支付状态
     *
     * @param orderId 商户订单号
     * @return 订单支付信息（Transaction）
     */
    Transaction queryOrderByOutTradeNo(String orderId);

    /**
     * 关闭未支付的订单
     *
     * @param orderId 商户订单号
     */
    void closeOrder(String orderId);
}